'''
你是一家餐厅的厨师，需要编写一个Python程序来管理餐厅的菜单。具体要求如下：
1. 初始化菜单 ：创建一个元组 menu ，
    元组中的每个元素是一个子元组，子元组包含两部分信息：
    菜品名称（字符串）和价格（浮点数）。
    初始菜单如下：
   - 宫保鸡丁，价格 38.0 元
   - 鱼香肉丝，价格 32.0 元
   - 麻婆豆腐，价格 18.0 元
   - 回锅肉，价格 42.0 元
2. 显示菜单 ：编写一个函数 display_menu ，该函数接受菜单元组作为参数，
    并按以下格式打印菜单：
```
1. 宫保鸡丁 - 38.0 元
2. 鱼香肉丝 - 32.0 元
3. 麻婆豆腐 - 18.0 元
4. 回锅肉 - 42.0 元
```
3. 计算订单总价 ：编写一个函数 calculate_total ，
    该函数接受菜单元组和一个订单列表作为参数。
    订单列表中的每个元素是菜品的序号（从 1 开始）。
    函数需要根据订单列表中的序号，从菜单元组中找到对应的菜品价格，并计算订单的总价。
    例如，订单列表 [1, 3] 表示顾客点了宫保鸡丁和麻婆豆腐，总价应为 56.0 元。
4. 主程序 ：在主程序中调用 display_menu 函数显示菜单，
    然后让用户输入订单序号，多个序号之间用空格分隔。
    将用户输入的序号转换为订单列表，
    调用 calculate_total 函数计算订单总价，并打印出总价。
'''
# 初始化菜单
menu = (("宫保鸡丁", 38.0), ("鱼香肉丝", 32.0), ("麻婆豆腐", 18.0), ("回锅肉", 42.0))

# 显示菜单
def display_menu(menu):
    for i in range(len(menu)):
        print(f"{i+1}. {menu[i][0]} - {menu[i][1]} 元")

# 计算订单总价
def calculate_total(manu,order):
    total_money=0.0
    for i in order:
        total_money+=manu[i-1][1]
    return total_money

#主程序
if __name__ == "__main__": #主程序入口
    display_menu(menu) #显示菜单
    order=input("请输入订单序号，多个序号之间用空格分隔：") #让用户输入订单序号，多个序号之间用空格分隔。
    order=list(map(int,order.split())) #将用户输入的序号转换为订单列表。map函数将字符串转换为整数。split函数将字符串分割成列表。
    #将用户输入的序号转换为订单列表，调用 calculate_total 函数计算订单总价，并打印出总价。
    total_money=calculate_total(menu,order) #调用 calculate_total 函数计算订单总价，并打印出总价。
    print(f"订单总价为：{total_money} 元") #打印出总价。
'''
map() 是 Python 内置的高阶函数，用于将一个函数应用于可迭代对象（如列表、元组等）的每个元素，并返回一个新的可迭代对象。
map() 函数的语法如下：

map(function, iterable)
function：一个函数，用于对 iterable 中的每个元素进行操作。
iterable：一个可迭代对象，如列表、元组等。
map() 函数会将 function 应用于 iterable 中的每个元素，并返回一个新的可迭代对象，
其中包含了 function 对每个元素的操作结果。
例如：

def square(x):
    return x ** 2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers))  # 输出：[1, 4, 9, 16, 25]
在上面的例子中，map() 函数将 square 函数应用于 numbers 列表中的每个元素，
并返回一个新的可迭代对象 squared_numbers，其中包含了每个元素的平方。

'''

'''
split() 是 Python 字符串对象的一个方法，用于将字符串按照指定的分隔符进行分割。
split() 方法的语法如下：

string.split(separator, maxsplit)
separator：可选参数，用于指定分隔符。
如果不指定 separator，则默认使用空格作为分隔符。
maxsplit：可选参数，用于指定分割的次数。
如果不指定 maxsplit，则默认分割所有的子字符串。
split() 方法返回一个包含分割后的子字符串的列表。
例如：

s = "hello world"
result = s.split()
print(result)  # 输出：['hello', 'world']
在上面的例子中，字符串 s 被空格分割成了两个子字符串 'hello' 和 'world'，
然后将它们存储在列表 result 中。
如果指定了分隔符，则按照指定的分隔符进行分割。
例如：

s = "hello,world"
result = s.split(",")
print(result)  # 输出：['hello', 'world']
在上面的例子中，字符串 s 被逗号分割成了两个子字符串 'hello' 和 'world'，

'''